package com.bgs.travelapp.user.controller;

import com.bgs.travelapp.page.PageRequest;
import com.bgs.travelapp.result.CommonResult;
import com.bgs.travelapp.user.entity.UserEntity;
import com.bgs.travelapp.user.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartRequest;

/**
 * lzy 2022-7-20 10点03分
 * 前台非管理用户模块
 * gpd 2022-08-03 09点12分
 * hbx 2022-8-11 09:16:51
 */

@RestController
@CrossOrigin
@RequestMapping("/user")
public class UserController {

    @Autowired
    UserService userService;

    /**
     * 使用分页格式 获取用户信息列表 （后台管理）
     * Lzy 2022-7-21 09点35分
     * @param pageRequest
     * @return
     */
    @GetMapping("getUserList")
    public CommonResult getUserList(PageRequest pageRequest){
        return CommonResult.ok(userService.getUserList(pageRequest));
    }

    /**
     * 管理前端用户（后台管理）
     * lzy 2022-7-21 09点19分
     * @param userEntity
     * @param multipartRequests
     * @return
     */
    @PostMapping("/saveUser")
    public CommonResult saveUser(UserEntity userEntity, MultipartRequest multipartRequests){
        return CommonResult.ok(userService.saveUser(userEntity,multipartRequests));
    }

    /**
     * 校验登录名是否存在（后台管理）
     * lzy 2022-7-21 14点36分
     * @param loginName
     * @return
     */
    @GetMapping("/checkLoginName")
    public CommonResult checkLoginName(String loginName){
        return CommonResult.ok(userService.checkLoginName(loginName));
    }

    /**
     * 修改用户信息（后台管理）
     * lzy 2022-7-21 19点42分
     * @param multipartRequest
     * @param userEntity
     * @return
     */
    @PutMapping("/editUser")
    public CommonResult editUser(MultipartRequest multipartRequest,UserEntity userEntity){
        return CommonResult.ok(userService.editUser(multipartRequest,userEntity));
    }

    /**
     * 删除用户信息（后台管理）
     * lzy 2022-7-25 10点43分
     * @param id
     * @return
     */
    @DeleteMapping("/deleteUser")
    public CommonResult deleteUser(Integer id){
        return CommonResult.ok(userService.deleteUser(id));
    }

    /**
     * 绑定/更改邮箱校验（后台管理）
     * lzy 2022-8-3 15点57分
     * @param mail
     * @param id
     * @return
     */
    @GetMapping("/checkMailEdit")
    public CommonResult checkMailEdit(String mail, Integer id){
        return userService.checkMailEdit(mail,id);
    }

    /**
     * 绑定/更改邮箱（后台管理）
     * lzy 2022-8-3 21点03分
     * @param mail
     * @param code
     * @param id
     * @return
     */
    @GetMapping("/editMail")
    public CommonResult editMail(String mail, String code, Integer id) {
        return userService.editMail(mail, code, id);
    }


    /**
     * 查询用户信息（前端---我的会员卡（查看明细））
     * gpd 2022-08-04 08点28分
     * @param id
     * @return
     */
    @GetMapping("/getQueryUserList")
    public CommonResult getQueryUserList(Integer id){
        return CommonResult.ok(userService.getQueryUserList(id));
    }

    /**
     * 根据游记里的用户id查询用户邮箱信息（后端管理）
     * hbx 2022年8月23日09:55:35
     * @param userId
     * @return
     */
    @RequestMapping("/mailByUserId")
    public CommonResult mailByUserId(Integer userId) {
        return CommonResult.ok(userService.mailByUserId(userId));
    }
     /**
     * 前端修改用户信息
     * fys 2022.8.23 11:21
     * @param userEntity
     * @return
     */
    @PostMapping("/updateUser")
    public CommonResult updateUser(UserEntity userEntity) {
        return CommonResult.ok(userService.updateUser(userEntity));
    }

    /**
     * 前端修改用户信息
     * fys 2022.8.23 11:21
     * @param id
     * @param multipartRequest
     * @return
     */
    @PostMapping("/updateUserAratar")
    public CommonResult updateUserAratar(MultipartRequest multipartRequest, Integer id) {
        return CommonResult.ok(userService.updateUserAratar(multipartRequest, id));
    }
    /**
     * 前端绑定/修改用户手机号
     * fys 2022.8.23 17:21
     * @param id
     * @param phone
     * @return
     */
    @PostMapping("/updateUserPhone")
    public CommonResult updateUserPhone(Integer id,String phone) {
        return CommonResult.ok(userService.updateUserPhone(id, phone));
    }
    /**
     * 前端绑定/修改用户邮箱
     * fys 2022.8.23 20:10
     * @param id
     * @param mail
     * @return
     */
    @PostMapping("/updateUserMail")
    public CommonResult updateUserMail(Integer id,String mail) {
        return CommonResult.ok(userService.updateUserMail(id, mail));
    }
}
